const fs = require('fs');
const path = require('path');

module.exports = (message, env) => {
    // !== 0，说明已经处理过，直接 return
    if(message.response.status){
        return message;
    }

    // 当前方法不为 POST 时，直接返回，免去后续步骤
    if(message.request.method !== 'POST'){
        return message;
    }

    // 判断 url 是否合法，规定 url 不能以 . 开头
    if(message.request.path.indexOf('.') === 0){
        message.response.status = 403;
        return message;
    }

    // 将相对路径改为绝对路径
    const requestPath = path.resolve(env.root + message.request.path);

    // 判断路径是否存在
    if(fs.existsSync(requestPath)){
        // 如果存在，则返回 403 状态码，因为 POST 是属于新增，不能已存在
        message.response.status = 403;
        return message;
    }

    // 把目录创建出来
    fs.mkdirSync(path.dirname(requestPath), {recursive: true});
    fs.writeFileSync(requestPath, message.request.body);
    message.response.status = 201;
    return message;

}